package com.hdax.service;

import com.hdax.entity.Employee;
import com.hdax.utils.ResultUtil;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 员工服务
 *
 * @author Aizen
 * @date 2022/05/03
 */
public interface EmployeeService {

    /**
     * 发现员工通过员工代码
     *
     * @param empCode emp员工账号
     * @return {@link Employee}
     */
    Employee findEmployeeByEmployeeCode(String empCode);

    /**
     * 找到所有
     * 根据名称模糊查询
     * offset当前页码数
     * limit当前显示几条
     *
     * @param employee 员工
     * @param offset   抵消
     * @param limit    限制
     * @return {@link List}<{@link Employee}>
     */
    List<Employee> findAll(@Param("offset")int offset, @Param("limit")int limit, @Param("employee") Employee employee);


    /**
     * 选择通过id
     * 根据id获取该id的详细信息
     *
     * @param empId emp id
     * @return {@link Employee}
     */
    Employee selectById(@Param("emp") int empId);

    /**
     * 得到名字数
     * 根据名称查询该名称下的总人数
     *
     * @param empName 名称
     * @return int
     */
    int getByNameCount(@Param("empName") String empName);

    /**
     * 删除通过id
     * 根据ID删除用户
     *
     * @param empId emp id
     * @return int
     */
    ResultUtil deleteById(@Param("empId") int empId);

    /**
     * 添加用户
     *
     * @param employee 员工
     * @return int
     */
    int insertById(Employee employee);

    /**
     * 更新通过id
     * 修改用户
     *
     * @param employee 员工
     * @return int
     */
    int updateById(@Param("Employ") Employee employee);


    /**
     * 添加员工
     * 添加员工(在添加员工档案的时候同步添加员工对应的账号信息
     *
     * @param employee 员工
     */
    void addEmployee(Employee employee);

    /**
     * 编辑员工代码
     * 编辑员工账号状态
     *
     * @param empCode emp代码
     * @param checked 检查
     * @return {@link ResultUtil}
     */
    ResultUtil editEmployeeOffByCode(String empCode, String checked);

    /**
     * 根据员工档案同步更新信息
     *
     * @param employee 员工
     */
    void updateByInfo(Employee employee);
}
